/*
 * Copyright (c) 2024 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef DLNA_PLAYER_LISTENER_H
#define DLNA_PLAYER_LISTENER_H

#include "cast_engine_dlna_service.h"
#include "i_cast_engine_dlna_service.h"
#include "i_dlna_player_listener.h"

namespace OHOS {
namespace CastEngine {
namespace CastEngineService {
class DlnaPlayerListener : public IDlnaPlayerListener {
public:
    explicit DlnaPlayerListener(wptr<CastEngineDlnaService> castEngineDlnaService);

    virtual ~DlnaPlayerListener();

    void OnStateChanged(const PlayerStates playbackState, bool isPlayWhenReady) override;
    void OnPositionChanged(int position, int bufferPosition, int duration)  override ;
    void OnMediaItemChanged(const MediaInfo &mediaInfo)  override ;
    void OnVolumeChanged(int volume, int maxVolume)  override ;
    void OnLoopModeChanged(const LoopMode loopMode)  override ;
    void OnPlaySpeedChanged(const PlaybackSpeed speed)  override ;
    void OnPlayerError(int errorCode, const std::string &errorMsg)  override ;
    void OnVideoSizeChanged(int width, int height)  override ;
    void OnNextRequest()  override ;
    void OnPreviousRequest()  override ;
    void OnSeekDone(int position)  override ;
    void OnEndOfDlna(int isLooping) override;
    
    private:
    wptr<CastEngineDlnaService> castEngineDlnaService_;
};
} // namespace CastEngineService
} // namespace CastEngine
} // namespace OHOS
#endif /* DLNA_PLAYER_LISTENER_H */
